<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>670. 最大交换</title>
  </head>
  <body>
    <script>
      //     给定一个非负整数，你至多可以交换一次数字中的任意两位。返回你能得到的最大值。

      // 示例 1 :

      // 输入: 2736
      // 输出: 7236
      // 解释: 交换数字2和数字7。
      // 示例 2 :

      // 输入: 9973
      // 输出: 9973
      // 解释: 不需要交换。
      // 注意:

      // 给定数字的范围是 [0, 108]

      // 来源：力扣（LeetCode）
      // 链接：https://leetcode.cn/problems/maximum-swap
      // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      /**
       * @param {number} num
       * @return {number}
       */
      var maximumSwap = function (num) {
        let arr = (num + '').split('')
        let numArr = [...arr]
        arr.sort((a, b) => b - a)
        // debugger
        for (let i = 0; i < arr.length; i++) {
          if (numArr[i] === arr[i]) {
            continue
          } else {
            const index = numArr.lastIndexOf(arr[i])
            const item = numArr[i]
            numArr[i] = numArr[index]
            numArr[index] = item
            break
          }
        }
        return Number(numArr.join(''))
      }
      console.log(maximumSwap(2736))
    </script>
  </body>
</html>
